package com.bosssoft.trainee.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bosssoft.trainee.mbg.dto.RoleDTO;
import com.bosssoft.trainee.mbg.po.Resource;
import com.bosssoft.trainee.mbg.po.Role;

import java.util.List;

/**
 * @Author: wuxin
 * @Date: 2022/6/17
 * @Project rbac
 * @Version 1.0
 * @Description
 */
public interface RoleService {
    /**
     * 非角色列表获取角色
     * @param pageSize 页大小
     * @param pageNum 页数
     * @return 一页数据
     */
    Page<Role> getRoles(int pageSize, int pageNum);

    /**
     * 从角色列表获取用户
     * @param pageSize 页大小
     * @param pageNum 页数
     * @param example 样例
     * @return 一页数据
     */
    Page<Role> getList(int pageSize, int pageNum, RoleDTO example);

    /**
     * 根据id批量获取Role
     * @param roleIds
     * @return
     */
    List<Role> getRoleByIds(List<Integer> roleIds);

    /**
     * 新增角色
     * @param roleDTO 新增对象
     * @return 受影响的记录数
     */
    int addRole(RoleDTO roleDTO);

    /**
     * 更新角色
     * @param roleDTO 更新对象
     * @return 受影响的记录数
     */
    int updateRole(RoleDTO roleDTO);

    /**
     * 根据id删除角色
     * @param id 删除对象id
     * @return 受影响的记录数
     */
    int deleteById(int id);

    /**
     * 批量获取角色能够访问的资源
     * @param roleIds
     * @return
     */
    List<Resource> getResourceByRoleIds(List<Integer> roleIds);


    /**
     * 检查角色代码是否被使用
     * @param code 需要检查的代码
     * @return true:被使用，false：未被使用
     */
    boolean checkCode(String code,Integer id);
}
